/*
package com.waitingresult.gateway.filter;

import cn.hutool.core.util.StrUtil;
import com.waitingresult.common.exception.TokenException;
import com.waitingresult.system.domain.vo.SystemUserVo;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.annotation.Order;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

import java.util.List;

import static com.waitingresult.common.constant.Constants.TOKEN;
*/
/**
 * All right reserved,Designed By WangShuai
 *
 * @author : WangShuai
 * @version : V1.0
 * @ClassName : HttpRequestFilter
 * @Description :
 * @date : 2021/9/23 20:29
 * <p>
 * <p>
 * 验证Token
 * @return : com.waitingresult.system.domain.vo.SystemUserVo
 * @author : WangShuai
 * @last update date : 2021/9/23 20:45
 * @param token:用户令牌
 * <p>
 * <p>
 * 检查是否为白名单URL
 * @return : java.lang.Boolean
 * @author : WangShuai
 * @last update date : 2021/9/23 20:53
 * @param url: 路径
 * <p>
 * <p>
 * 鉴权
 * @return : void
 * @author : WangShuai
 * @last update date : 2021/9/23 20:54
 * @param url: 访问路径
 * @param permissionUrlList: 用户拥有权限
 *//*

@Order(1)
public class HttpRequestFilter implements GlobalFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 获取request
        ServerHttpRequest serverHttpRequest = exchange.getRequest();
        // 获取请求URL
        String url = serverHttpRequest.getURI().getPath();
        if(StrUtil.isNotBlank(url)){
            // 获取jwt
            String token = serverHttpRequest.getHeaders().getFirst(TOKEN);

            SystemUserVo systemUserVo = this.checkToken(token);
        }
        return null;
    }
    */
/**
 * 验证Token
 *
 * @return : com.waitingresult.system.domain.vo.SystemUserVo
 * @author : WangShuai
 * @last update date : 2021/9/23 20:45
 * @param token:用户令牌
 * <p>
 * <p>
 * 检查是否为白名单URL
 * @return : java.lang.Boolean
 * @author : WangShuai
 * @last update date : 2021/9/23 20:53
 * @param url: 路径
 * <p>
 * <p>
 * 鉴权
 * @return : void
 * @author : WangShuai
 * @last update date : 2021/9/23 20:54
 * @param url: 访问路径
 * @param permissionUrlList: 用户拥有权限
 *//*

    private SystemUserVo checkToken(String token){
        if(StrUtil.isNotBlank(token)){
            throw  new TokenException("令牌无效或已过期!");
        }
        //TODO 解析Token 得到用户信息
        //判断用户信息是否为空
        //用户状态验证
        //返回用户信息
        return null;
    }

    // 通过URI , User 判断是否有权限

    */
/**
 *
 * 检查是否为白名单URL
 *
 * @return : java.lang.Boolean
 * @author : WangShuai
 * @last update date : 2021/9/23 20:53
 * @param url: 路径
 *//*

    private Boolean checkUrl(String url){
        // TODO 读取 gatway 白名单URL List 循环遍历
        return false;
    }


    */
/**
 *
 * 鉴权
 *
 * @return : void
 * @author : WangShuai
 * @last update date : 2021/9/23 20:54
 * @param url: 访问路径
 * @param permissionUrlList: 用户拥有权限
 *//*

    private void checkPermission(String url, List<String> permissionUrlList){

        if(!permissionUrlList.contains(url)){
            //TODO 所有的权限,提示,字符提示 都通过Nacos配置中心进行获取.
            throw new  TokenException("没有权限访问!");
        }
    }

}
*/
